import geopandas as gpd
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
pd.set_option('display.max_columns', 500)
import geopandas as gpd
For this lab we return to Fire Service Coverage seeking to assess tradeoffs in service against costs of maintaining different levels of stations.
Instead of covering all demand, the modeling approach tries to maximize the demand covered.
Specifically, we will employ the maximal covering location problem.
Instead of minimizing the number of facilities needed in a previous lab, we now introduce a parameter, $p$, representing a fixed number of facilities to keep in the system.
In Lab 4, there are three research questions we want to look into.
The coverage standard for this lab will be fixed at 8000m.
S = 8000
# Note: it might take time, as FD is a huge file.
FDs = gpd.read_file("Data/California_Fire_Districts.shp") # load a shapefile containing California Fire District here
blocks = gpd.read_file('Data/sbBlocks_pop.shp')
stations = gpd.read_file("Data/Fire_Stations_SBC.shp") # Load a shapefile containing Fire Stations in Santa Barbara County here
There are many Fire Districts in California.
We are only going to focus in the "Santa Barbara County Fire District".
In the second map, note that there are many other Fire Districts in Santa Barbara County.
Though it's not shown on the map, they have some overlapping area, which means the area is co-operated by multiple Fire Districts.
FDs.plot("Name")
<Axes: >
blocks = blocks.to_crs(FDs.crs)
stations = stations.to_crs(FDs.crs)
location_name = "SANTA BARBARA CFD"
SBC_FD = FDs.query("Name == @location_name")
SBC_FD
| OBJECTID | County | FDID | MACSID | Name | Address | City | Zip | FireChief | Phone | Notes | LastUpdate | Website | CALFIREUni | SHAPE_Leng | SHAPE_Area | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 223 | 318 | SANTA BARBARA | 42035 | SBC | SANTA BARBARA CFD | 4410 CATHEDRAL OAKS RD | SANTA BARBARA | 93110 | MARK A. HARTWIG | (805) 681‐5500 | None | 2018-06-21 | https://www.sbcfire.com/ | SBC | 778360.396807 | 3.666998e+09 | MULTIPOLYGON (((23728.804 -401033.857, 23715.3... |
FDs = FDs.loc[FDs.intersects(blocks.unary_union)].reset_index(drop=True)
FDs.plot("Name", legend=True, figsize=(10,10))
<Axes: >
We do this because FDs contains a large shapefile, which might burden your RAM.
del FDs
NOTE: don't forget to RESET_INDEX() whenever you take a subset!
#set crs to fix problems
stations = stations.to_crs(SBC_FD.crs)
#overlay operation
stations_in_SBC_FD = gpd.sjoin(stations, SBC_FD, predicate='within')
# check result
len(stations_in_SBC_FD)
#rename variables
stations = stations_in_SBC_FD
#reset index
stations.reset_index(drop=True, inplace=True)
stations.plot()
<Axes: >
Hint: when there's something you don't know about plot function, refer to this document page (https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.plot.html)! Also, you can Google or ask chatGPT :)
blocks = gpd.read_file('Data/sbBlocks_pop.shp')
#set the crs to the same as the one we will merge with it
blocks = blocks.to_crs('EPSG:3310')
#find the centroid of the blocks
blocks.geometry = blocks.centroid
blocks
| STATEFP20 | COUNTYFP20 | TRACTCE20 | BLOCKCE20 | GEOID20 | NAME20 | GEOID | Population | F1_Race | White | Black | AmIndian | Asian | Hawaiian | Other | F2__Races | F2_Races | F3_Races | Hispanic_O | Not_Hispan | NH_1_Race | NH_2__Race | NH_2_Races | F18__Popul | F18__1_Rac | F18__Wht | F18__Blk | F18__Ind | F18__Asn | F18__Hwn | F18__Oth | F18__2__Ra | F18__2_Rac | H18__Pop | NH18__Pop | Housing_Un | HU_Occupie | HU_Vacant | Populati_1 | GQ_Institu | GQ_Inst_CF | GQ_Inst_Ju | GQ_Inst_Nu | GQ_Inst_Ot | GQ_NonInst | GQ_NonIn_1 | GQ_NonIn_2 | GQ_NonIn_3 | Shape_Leng | Shape_Area | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 06 | 083 | 980500 | 1005 | 060839805001005 | Block 1005 | 7500000US060839805001005 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.352988 | 1.526844e-03 | POINT (-55678.105 -354690.532) |
| 1 | 06 | 083 | 002503 | 1084 | 060830025031084 | Block 1084 | 7500000US060830025031084 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.171389 | 4.399815e-05 | POINT (-60362.676 -345591.399) |
| 2 | 06 | 083 | 002503 | 1083 | 060830025031083 | Block 1083 | 7500000US060830025031083 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.163512 | 4.814798e-04 | POINT (-59882.601 -345033.782) |
| 3 | 06 | 083 | 002503 | 1085 | 060830025031085 | Block 1085 | 7500000US060830025031085 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.023011 | 1.348363e-06 | POINT (-60245.991 -345988.216) |
| 4 | 06 | 083 | 002011 | 1030 | 060830020111030 | Block 1030 | 7500000US060830020111030 | 123 | 109 | 77 | 1 | 1 | 1 | 1 | 28 | 14 | 13 | 1 | 75 | 48 | 47 | 1 | 1 | 77 | 68 | 46 | 1 | 0 | 1 | 0 | 20 | 9 | 8 | 44 | 33 | 39 | 39 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.012680 | 1.411774e-06 | POINT (-39831.869 -345910.377) |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 7253 | 06 | 083 | 990000 | 0032 | 060839900000032 | Block 0032 | None | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.845198 | 4.954950e-03 | POINT (26352.947 -449832.111) |
| 7254 | 06 | 083 | 980100 | 1030 | 060839801001030 | Block 1030 | None | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.002871 | 1.494979e-07 | POINT (-1097.203 -453307.679) |
| 7255 | 06 | 083 | 980100 | 1025 | 060839801001025 | Block 1025 | None | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000896 | 4.440147e-08 | POINT (-42467.263 -442826.614) |
| 7256 | 06 | 083 | 980100 | 1035 | 060839801001035 | Block 1035 | None | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.001724 | 6.329617e-08 | POINT (-7117.185 -443038.484) |
| 7257 | 06 | 083 | 980100 | 1006 | 060839801001006 | Block 1006 | None | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000707 | 3.337052e-08 | POINT (26585.112 -450096.991) |
7258 rows × 51 columns
SBC_FD
| OBJECTID | County | FDID | MACSID | Name | Address | City | Zip | FireChief | Phone | Notes | LastUpdate | Website | CALFIREUni | SHAPE_Leng | SHAPE_Area | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 223 | 318 | SANTA BARBARA | 42035 | SBC | SANTA BARBARA CFD | 4410 CATHEDRAL OAKS RD | SANTA BARBARA | 93110 | MARK A. HARTWIG | (805) 681‐5500 | None | 2018-06-21 | https://www.sbcfire.com/ | SBC | 778360.396807 | 3.666998e+09 | MULTIPOLYGON (((23728.804 -401033.857, 23715.3... |
SBC_FD.geometry[223]
# make a boundary for the area that is covered by the fire stations in a geometry
#however SBC_FD.geometry still contains the index (1,2,3,4...) so you need to select the entry number 223
blocks.within(SBC_FD.geometry[223])
0 True
1 True
2 True
3 False
4 True
...
7253 False
7254 False
7255 False
7256 False
7257 False
Length: 7258, dtype: bool
# do the overlay using the .loc funciton.inputing the whole geometry that was just found
blocks = blocks.loc[blocks.within(SBC_FD.geometry[223])].reset_index(drop=True)
blocks.plot()
<Axes: >
fig, ax = plt.subplots(figsize=(10,10))
opacity = .4
marker_size = blocks['Population']*1
blocks.plot(column='Population', cmap="hsv", ax=ax,legend=True, legend_kwds={'label': 'Population'})
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.title('Population of Blocks')
sc = ax.scatter(blocks.geometry.x, blocks.geometry.y, s=marker_size, alpha=opacity, c=blocks["Population"])
legend = ax.legend(*sc.legend_elements(), title="Population", loc='lower right')
ax.add_artist(legend)
plt.show()
Decision Variables: \begin{align*} & x_j = \begin{cases} 1, & \text{if facility $j$ is open}, \\ 0, & \text{otherwise}. \end{cases} \\ & y_i = \begin{cases} 1, & \text{if demand $i$ is covered}, \\ 0, & \text{otherwise}. \end{cases} \end{align*}
Parameters: \begin{align*} & I = \text{number of demands}, \\ & J = \text{number of facilities}, \\ & S = \text{Coverage Distance Standard}, \\ & a_i = \text{Weight assigned to demand $i$}, \\ & D_{ij} = \text{Distance between demand $i$ and facility $j$}, \\ & N_i = \{ j \in J \, | \, D_{ij} \leq S \}, \\ & P = \text{the number of facilities to be opened}. \end{align*}
Objective Function: \begin{align*} \text{Maximize:} \quad & \sum_{i=1}^{I} a_i y_i \end{align*}
Constraints: \begin{align*} \text{Subject to:} \quad & \sum_{j \in N_i} x_j \geq y_i, \quad \forall i \in I \\ & \sum_{j=1}^{J} x_j \leq P, \\ & x_j, y_i \in \{0, 1\}, \quad \forall i, j. \end{align*}
I =len(blocks)
J = len(stations_in_SBC_FD)
P =26
a_i = blocks['Population']
distances = blocks.geometry.apply(lambda geom: stations_in_SBC_FD.distance(geom))
D_ij = distances.to_numpy()
D_ij
array([[10488.6795986 , 11964.87591378, 23611.82413809, ...,
66741.68258625, 53218.36841912, 20151.87176686],
[20682.54861226, 22152.31938929, 33461.47908875, ...,
75109.10054863, 61787.71166349, 30028.9029038 ],
[21011.56653512, 22390.74572891, 33890.975921 , ...,
74974.6012877 , 61684.30027088, 30161.1291684 ],
...,
[70568.5385688 , 67755.61573941, 65491.09933567, ...,
15539.22357526, 26434.05002471, 59030.5035491 ],
[18211.13870167, 19262.59329051, 5978.1092757 , ...,
61272.96507486, 48520.81899437, 20396.47029567],
[72889.29787724, 70070.13567839, 67820.57571675, ...,
17199.2022653 , 28577.3517051 , 61344.79287098]])
# This is a hint for students who want to do it with list comprehension
# Creating a two-dimensional list
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]]
# Using list comprehension to filter even numbers from the matrix
# The '%' symbol in Python is called the modulo operator.
#It returns the remainder of the division of the left operand by the right operand.
even_numbers = [[matrix[r][c] for c in range(len(matrix[0])) if matrix[r][c]%2 == 0]
for r in range(len(matrix))]
print(even_numbers)
[[2], [4, 6], [8], [10, 12]]
S
8000
N_i = {i: [j for j in range(J) if D_ij[i][j] <= S] for i in range(I)}
len(N_i)
3224
import gurobipy as gp
from gurobipy import GRB
# Create a new Gurobi model
mclp = gp.Model("Maximal_Covering_Location")
# Decision Variables
x = mclp.addVars(J, vtype = GRB.BINARY, name ="x") #if the facility covered or not
y = mclp.addVars(I, vtype=GRB.BINARY, name ="y") #if the demand is covered or not
# Objective Function
mclp.setObjective(gp.quicksum(y[i]*a_i[i] for i in range(I)), GRB.MAXIMIZE) #maximise the demand covered with the facilities avalable
# Constraints
# Each demand must be covered by neighboring facility or it will just take all of the stations
for i in range(I):
mclp.addConstr(gp.quicksum(x[j] for j in N_i[i]) >= y[i])
# Number of opened facilities must not exceed P
mclp.addConstr(gp.quicksum(x[j] for j in range(J)) <= P)
# Optimize the model
mclp.optimize()
Set parameter TokenServer to value "gurobi.geog.ucsb.edu" Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0xba252813 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
open_stations_index = [j for j in range(J) if x[j].X > 0.5]
print(f"Open stations: {open_stations_index}")
print(f"Number of open stations: {len(open_stations_index)}")
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
# open_stations = gpd.GeoDataFrame(geometry=[stations_in_SBC_FD for j in open_stations_index])
open_stations = stations_in_SBC_FD.iloc[open_stations_index]
A = blocks.plot("Population", figsize = (10,10), alpha = .4, cmap = 'gnuplot', markersize = blocks["Population"], legend = True,
legend_kwds={'label': "Population"})
open_stations.plot(ax=A, label="open_stations", color = "blue")
buffer = open_stations.buffer(S)
buffer.plot(ax=A, linestyle="--", facecolor='none')
<Axes: >
open_stations.plot
<geopandas.plotting.GeoplotAccessor object at 0x000002BD517A5B40>
Here, we will functionize our optimization model.
So that with given P value, the model can be solved.
# Let me give you functionize example.
# For more, refer to Lab 0.
sample_list = [1,2,3,4]
def sum_array(a):
s = 0
a = np.array(a)
for num in a:
s += num
return s, a # Return the summation of all elements, and the original array
sum_array(sample_list)
(10, array([1, 2, 3, 4]))
def solve_mclp(P):
#question 4
mclp = gp.Model("Maximal_Covering_Location")
# Decision Variables
x = mclp.addVars(J, vtype = GRB.BINARY, name ="x") #if the facility covered or not
y = mclp.addVars(I, vtype=GRB.BINARY, name ="y") #if the demand is covered or not
# Objective Function
mclp.setObjective(gp.quicksum(y[i]*a_i[i] for i in range(I)), GRB.MAXIMIZE) #maximise the demand covered with the facilities avalable
# Constraints
# Each demand must be covered by neighboring facility or it will just take all of the stations
for i in range(I):
mclp.addConstr(gp.quicksum(x[j] for j in N_i[i]) >= y[i])
# Number of opened facilities must not exceed P
mclp.addConstr(gp.quicksum(x[j] for j in range(J)) <= P)
# Optimize the model
mclp.optimize()
#question 5
open_stations_index = [j for j in range(J) if x[j].X > 0.5]
print(f"Open stations: {open_stations_index}")
print(f"Number of open stations: {len(open_stations_index)}")
open_stations = stations_in_SBC_FD.iloc[open_stations_index]
return open_stations, mclp.obj_val
Current coverage is the sum of all the demand weights, currently covered by existing stations.
Here are the thought process you can go through.
current = stations.buffer(S).unary_union
coverage = blocks.loc[blocks.within(current)].reset_index(drop=True)
coverage = coverage["Population"].sum()
coverage
167606
selecteds = [] # List to store selected stations for each value of p
obj_vals = [] # List to store objective values for each value of p
# Iterate over values of p starting from 3
for p in range(3, len(stations)+1):
print(f"=================== for P={p}") # Print current value of p
# Call solve_mclp function to solve the problem for current value of p
selected_stations, obj_val = solve_mclp(p)
# Append selected stations to the selecteds list
selecteds.append(selected_stations)
# Append objective value to the obj_vals list
obj_vals.append(obj_val)
=================== for P=3
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xc1148ef3
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [3e+00, 3e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 28463.000000
Root relaxation: objective 1.420460e+05, 27 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 142046.00000 142046.000 0.00% - 0s
Explored 1 nodes (27 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 142046 28463 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.420460000000e+05, best bound 1.420460000000e+05, gap 0.0000%
Open stations: [5, 16, 19]
Number of open stations: 3
=================== for P=4
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xd9224489
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [4e+00, 4e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.01s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 35944.000000
Root relaxation: objective 1.535990e+05, 20 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 153599.00000 153599.000 0.00% - 0s
Explored 1 nodes (20 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 153599 35944 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.535990000000e+05, best bound 1.535990000000e+05, gap 0.0000%
Open stations: [5, 16, 17, 19]
Number of open stations: 4
=================== for P=5
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x1e8621a4
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [5e+00, 5e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.01s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 101213.00000
Root relaxation: objective 1.578710e+05, 19 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 157871.00000 157871.000 0.00% - 0s
Explored 1 nodes (19 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 157871 101213 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.578710000000e+05, best bound 1.578710000000e+05, gap 0.0000%
Open stations: [5, 9, 16, 17, 22]
Number of open stations: 5
=================== for P=6
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x4872ed6f
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [6e+00, 6e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 103347.00000
Root relaxation: objective 1.615640e+05, 16 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 161564.00000 161564.000 0.00% - 0s
Explored 1 nodes (16 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 161564 103347 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.615640000000e+05, best bound 1.615640000000e+05, gap 0.0000%
Open stations: [5, 9, 16, 17, 18, 22]
Number of open stations: 6
=================== for P=7
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x50c869a2
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [7e+00, 7e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 138503.00000
Root relaxation: objective 1.636980e+05, 14 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 163698.00000 163698.000 0.00% - 0s
Explored 1 nodes (14 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 163698 138503 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.636980000000e+05, best bound 1.636980000000e+05, gap 0.0000%
Open stations: [5, 9, 14, 16, 17, 18, 22]
Number of open stations: 7
=================== for P=8
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xc631c009
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [8e+00, 8e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 139069.00000
Root relaxation: objective 1.656950e+05, 11 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 165695.00000 165695.000 0.00% - 0s
Explored 1 nodes (11 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 165695 139069 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.656950000000e+05, best bound 1.656950000000e+05, gap 0.0000%
Open stations: [4, 9, 14, 16, 17, 18, 22, 26]
Number of open stations: 8
=================== for P=9
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xde1bae41
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [9e+00, 9e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 139439.00000
Root relaxation: objective 1.663330e+05, 11 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 166333.00000 166333.000 0.00% - 0s
Explored 1 nodes (11 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 166333 139439 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.663330000000e+05, best bound 1.663330000000e+05, gap 0.0000%
Open stations: [4, 9, 11, 14, 16, 17, 18, 22, 26]
Number of open stations: 9
=================== for P=10
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xda05e924
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 139558.00000
Root relaxation: objective 1.668990e+05, 6 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 166899.00000 166899.000 0.00% - 0s
Explored 1 nodes (6 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 166899 139558 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.668990000000e+05, best bound 1.668990000000e+05, gap 0.0000%
Open stations: [4, 9, 11, 13, 14, 16, 17, 18, 22, 26]
Number of open stations: 10
=================== for P=11
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x4f3e9f77
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 140196.00000
Root relaxation: objective 1.671390e+05, 6 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167139.00000 167139.000 0.00% - 0s
Explored 1 nodes (6 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167139 140196 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.671390000000e+05, best bound 1.671390000000e+05, gap 0.0000%
Open stations: [4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 26]
Number of open stations: 11
=================== for P=12
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x1e3b83ba
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 140425.00000
Root relaxation: objective 1.673330e+05, 3 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167333.00000 167333.000 0.00% - 0s
Explored 1 nodes (3 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167333 140425 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.673330000000e+05, best bound 1.673330000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 26]
Number of open stations: 12
=================== for P=13
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x209b8da2
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 167360.00000
Root relaxation: objective 1.674520e+05, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167452.00000 167452.000 0.00% - 0s
Explored 1 nodes (2 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167452 167360 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.674520000000e+05, best bound 1.674520000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 23, 26]
Number of open stations: 13
=================== for P=14
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x03cf73b5
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 167374.00000
Root relaxation: objective 1.675220e+05, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167522.00000 167522.000 0.00% - 0s
Explored 1 nodes (2 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167522 167374 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.675220000000e+05, best bound 1.675220000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 14
=================== for P=15
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x952e5b76
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.01s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 167443.00000
Root relaxation: objective 1.675910e+05, 1 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167591.00000 167591.000 0.00% - 0s
Explored 1 nodes (1 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167591 167443 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.675910000000e+05, best bound 1.675910000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 12, 13, 14, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 15
=================== for P=16
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xcd3e3dcd
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 167605.00000
Explored 0 nodes (0 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 167605 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676050000000e+05, best bound 1.676050000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 16
=================== for P=17
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x0e5accf5
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3203 rows and 3211 columns
Presolve time: 0.01s
Presolved: 22 rows, 41 columns, 90 nonzeros
Found heuristic solution: objective 167606.00000
Variable types: 0 continuous, 41 integer (41 binary)
Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 17
=================== for P=18
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xbd53d068
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3210 rows and 3218 columns
Presolve time: 0.00s
Presolved: 15 rows, 34 columns, 62 nonzeros
Found heuristic solution: objective 167606.00000
Variable types: 0 continuous, 34 integer (34 binary)
Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 17
=================== for P=19
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x4d9615ea
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.00 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 18
=================== for P=20
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x06e3d55a
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 19
=================== for P=21
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xac9379a7
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 19
=================== for P=22
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x294b1219
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 19
=================== for P=23
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x9b75ffee
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 19
=================== for P=24
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x4030e886
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 19
=================== for P=25
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x80c372e9
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [3e+01, 3e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 19
=================== for P=26
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xba252813
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [3e+01, 3e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.01s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26]
Number of open stations: 19
=================== for P=27
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xb06b9a49
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [3e+01, 3e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26]
Number of open stations: 19
=================== for P=28
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xe144439c
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [3e+01, 3e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Explored 0 nodes (0 simplex iterations) in 0.00 seconds (0.00 work units)
Thread count was 1 (of 20 available processors)
Solution count 2: 167606 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
Open stations: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
Number of open stations: 28
results = pd.DataFrame({
'P': range(3, len(stations)+1),
'Coverage': obj_vals
})
results
| P | Coverage | |
|---|---|---|
| 0 | 3 | 142046.0 |
| 1 | 4 | 153599.0 |
| 2 | 5 | 157871.0 |
| 3 | 6 | 161564.0 |
| 4 | 7 | 163698.0 |
| 5 | 8 | 165695.0 |
| 6 | 9 | 166333.0 |
| 7 | 10 | 166899.0 |
| 8 | 11 | 167139.0 |
| 9 | 12 | 167333.0 |
| 10 | 13 | 167452.0 |
| 11 | 14 | 167522.0 |
| 12 | 15 | 167591.0 |
| 13 | 16 | 167605.0 |
| 14 | 17 | 167606.0 |
| 15 | 18 | 167606.0 |
| 16 | 19 | 167606.0 |
| 17 | 20 | 167606.0 |
| 18 | 21 | 167606.0 |
| 19 | 22 | 167606.0 |
| 20 | 23 | 167606.0 |
| 21 | 24 | 167606.0 |
| 22 | 25 | 167606.0 |
| 23 | 26 | 167606.0 |
| 24 | 27 | 167606.0 |
| 25 | 28 | 167606.0 |
def scatterplot_result(results):
# Plot the DataFrame, in scatter plot, taking P values as x and Coverage values as y
results.plot(kind="scatter", x="P", y="Coverage")
# Add grid lines
plt.grid(True)
# Add the current coverage point in color red
plt.scatter(len(stations), coverage, color="red")
# provide a dashed red line to inform current coverage
plt.axhline(y=coverage, color='r', linestyle='--', label='Current Coverage')
# show the plot!
plt.show()
scatterplot_result(results)
Feel free to edit any other plotting details
def map_result(p, demand_block=True):
open_stations = selecteds[p-3]
fig, ax = plt.subplots(figsize=(10, 10))
blocks.plot(column="Population",
ax=ax,
alpha=0.4,
cmap='gnuplot',
markersize=blocks["Population"],
legend=False # No legend here
)
open_stations.plot(ax=ax, label="Open Stations", color="red", markersize=50)
# buffer
buffer = open_stations.buffer(S)
buffer.plot(ax=ax, linestyle="--", edgecolor='blue', facecolor='none')
if demand_block:
blocks.plot(column="Population", ax=ax, markersize=5, alpha=0.4, legend=True, cmap='gnuplot')
else:
fishnet_points.plot(ax=ax, color='green', markersize=5)
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels, title='Legend')
plt.title(f"{p} stations open")
plt.show()
map_result(13) # Try different p!
def optimize_and_evaluate(demand_block=True):
selecteds = []
obj_vals = []
for p in range(3, len(stations)+1):
print(f"=================== for P={p}")
selected_stations, obj_val = solve_mclp(p)
selecteds.append(selected_stations)
obj_vals.append(obj_val)
map_result(p, demand_block)
results = pd.DataFrame({
'P': range(3, len(stations)+1),
'Coverage': obj_vals
})
scatterplot_result(results)
optimize_and_evaluate()
=================== for P=3
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xc1148ef3
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [3e+00, 3e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 28463.000000
Root relaxation: objective 1.420460e+05, 27 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 142046.00000 142046.000 0.00% - 0s
Explored 1 nodes (27 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 142046 28463 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.420460000000e+05, best bound 1.420460000000e+05, gap 0.0000%
Open stations: [5, 16, 19]
Number of open stations: 3
=================== for P=4
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xd9224489
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [4e+00, 4e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 35944.000000
Root relaxation: objective 1.535990e+05, 20 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 153599.00000 153599.000 0.00% - 0s
Explored 1 nodes (20 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 153599 35944 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.535990000000e+05, best bound 1.535990000000e+05, gap 0.0000%
Open stations: [5, 16, 17, 19]
Number of open stations: 4
=================== for P=5
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x1e8621a4
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [5e+00, 5e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 101213.00000
Root relaxation: objective 1.578710e+05, 19 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 157871.00000 157871.000 0.00% - 0s
Explored 1 nodes (19 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 157871 101213 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.578710000000e+05, best bound 1.578710000000e+05, gap 0.0000%
Open stations: [5, 9, 16, 17, 22]
Number of open stations: 5
=================== for P=6
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x4872ed6f
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [6e+00, 6e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 103347.00000
Root relaxation: objective 1.615640e+05, 16 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 161564.00000 161564.000 0.00% - 0s
Explored 1 nodes (16 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 161564 103347 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.615640000000e+05, best bound 1.615640000000e+05, gap 0.0000%
Open stations: [5, 9, 16, 17, 18, 22]
Number of open stations: 6
=================== for P=7
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x50c869a2
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [7e+00, 7e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.02s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 138503.00000
Root relaxation: objective 1.636980e+05, 14 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 163698.00000 163698.000 0.00% - 0s
Explored 1 nodes (14 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 163698 138503 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.636980000000e+05, best bound 1.636980000000e+05, gap 0.0000%
Open stations: [5, 9, 14, 16, 17, 18, 22]
Number of open stations: 7
=================== for P=8
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xc631c009
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [8e+00, 8e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 139069.00000
Root relaxation: objective 1.656950e+05, 11 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 165695.00000 165695.000 0.00% - 0s
Explored 1 nodes (11 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 165695 139069 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.656950000000e+05, best bound 1.656950000000e+05, gap 0.0000%
Open stations: [4, 9, 14, 16, 17, 18, 22, 26]
Number of open stations: 8
=================== for P=9
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xde1bae41
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [9e+00, 9e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 139439.00000
Root relaxation: objective 1.663330e+05, 11 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 166333.00000 166333.000 0.00% - 0s
Explored 1 nodes (11 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 166333 139439 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.663330000000e+05, best bound 1.663330000000e+05, gap 0.0000%
Open stations: [4, 9, 11, 14, 16, 17, 18, 22, 26]
Number of open stations: 9
=================== for P=10
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xda05e924
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 139558.00000
Root relaxation: objective 1.668990e+05, 6 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 166899.00000 166899.000 0.00% - 0s
Explored 1 nodes (6 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 166899 139558 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.668990000000e+05, best bound 1.668990000000e+05, gap 0.0000%
Open stations: [4, 9, 11, 13, 14, 16, 17, 18, 22, 26]
Number of open stations: 10
=================== for P=11
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x4f3e9f77
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 140196.00000
Root relaxation: objective 1.671390e+05, 6 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167139.00000 167139.000 0.00% - 0s
Explored 1 nodes (6 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167139 140196 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.671390000000e+05, best bound 1.671390000000e+05, gap 0.0000%
Open stations: [4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 26]
Number of open stations: 11
=================== for P=12
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x1e3b83ba
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 140425.00000
Root relaxation: objective 1.673330e+05, 3 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167333.00000 167333.000 0.00% - 0s
Explored 1 nodes (3 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167333 140425 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.673330000000e+05, best bound 1.673330000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 26]
Number of open stations: 12
=================== for P=13
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x209b8da2
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 167360.00000
Root relaxation: objective 1.674520e+05, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167452.00000 167452.000 0.00% - 0s
Explored 1 nodes (2 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167452 167360 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.674520000000e+05, best bound 1.674520000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 23, 26]
Number of open stations: 13
=================== for P=14
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x03cf73b5
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 167374.00000
Root relaxation: objective 1.675220e+05, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167522.00000 167522.000 0.00% - 0s
Explored 1 nodes (2 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167522 167374 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.675220000000e+05, best bound 1.675220000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 13, 14, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 14
=================== for P=15
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x952e5b76
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 3e+03]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3201 rows and 3209 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 100 nonzeros
Variable types: 0 continuous, 43 integer (43 binary)
Found heuristic solution: objective 167443.00000
Root relaxation: objective 1.675910e+05, 1 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 167591.00000 167591.000 0.00% - 0s
Explored 1 nodes (1 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 167591 167443 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.675910000000e+05, best bound 1.675910000000e+05, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 12, 13, 14, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 15
=================== for P=16 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0xcd3e3dcd Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3201 rows and 3209 columns Presolve time: 0.00s Presolved: 24 rows, 43 columns, 100 nonzeros Variable types: 0 continuous, 43 integer (43 binary) Found heuristic solution: objective 167605.00000 Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 167605 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676050000000e+05, best bound 1.676050000000e+05, gap 0.0000% Open stations: [2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26] Number of open stations: 16
=================== for P=17 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0x0e5accf5 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3203 rows and 3211 columns Presolve time: 0.01s Presolved: 22 rows, 41 columns, 90 nonzeros Found heuristic solution: objective 167606.00000 Variable types: 0 continuous, 41 integer (41 binary) Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26] Number of open stations: 17
=================== for P=18 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0xbd53d068 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3210 rows and 3218 columns Presolve time: 0.00s Presolved: 15 rows, 34 columns, 62 nonzeros Found heuristic solution: objective 167606.00000 Variable types: 0 continuous, 34 integer (34 binary) Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26] Number of open stations: 17
=================== for P=19 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0x4d9615ea Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 18
=================== for P=20 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0x06e3d55a Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.02s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
=================== for P=21 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0xac9379a7 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
=================== for P=22 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0x294b1219 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.01s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
=================== for P=23 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0x9b75ffee Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.05 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
=================== for P=24 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0x4030e886 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
=================== for P=25 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0x80c372e9 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
=================== for P=26 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0xba252813 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.01s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26] Number of open stations: 19
=================== for P=27 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0xb06b9a49 Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.00 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26] Number of open stations: 19
=================== for P=28 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros Model fingerprint: 0xe144439c Variable types: 0 continuous, 3252 integer (3252 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 3e+03] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3225 rows and 3252 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 167606 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27] Number of open stations: 28
boundary = SBC_FD.envelope # .envelope gives you the bounding rectangle of given GeoDataFrame.
boundary.bounds
| minx | miny | maxx | maxy | |
|---|---|---|---|---|
| 223 | -61331.613 | -401270.1778 | 50847.5684 | -323367.7559 |
minx, miny, maxx, maxy = boundary.loc[223].bounds
print(minx, miny, maxx, maxy)
-61331.61300000176 -401270.1777999997 50847.56839999929 -323367.7559000002
from shapely.geometry import Point
# Here, we are going to create fishnet points.
# Fishnet points are points spaced with an equal interval.
# You'll see when you see the output!
# Define the interval between points
#### Note: Adjust interval value as needed for lab question 2
def create_fishnet(interval):
# Create arrays of x and y coordinates using np.arange
x_coords = np.arange(minx, maxx, interval)
y_coords = np.arange(miny, maxy, interval)
# Create a list to store the points
fishnet_points = []
# Generate points for the fishnet
for y in y_coords:
for x in x_coords:
fishnet_points.append((x, y))
# Print the number of points generated
print("Number of points in the fishnet:", len(fishnet_points))
fishnet_points = gpd.GeoSeries([Point(pt_cd) for pt_cd in fishnet_points])
fishnet_points = fishnet_points[fishnet_points.within(SBC_FD.geometry[223])]
fishnet_points.plot(figsize=(15,5))
return fishnet_points
interval = 5280/5 # default: 5280/5 feet (1 mile / 5 = 0.2 mile)
fishnet_points = create_fishnet(interval)
Number of points in the fishnet: 7918
# Current Coverage
current_coverage = fishnet_points.within(stations.buffer(S).unary_union).sum()
current_coverage
1795
fishnet_points = fishnet_points.reset_index(drop=True)
fishnet_points.geometry
len(fishnet_points)
3304
Note: all the fishnet points will have the same weight, 1.
I = len(fishnet_points)
J =len(stations)
a_i = [1]*I
D_ij = [[np.sqrt((fishnet_points.geometry.x[i] - stations.geometry.x[j])**2 +
(fishnet_points.geometry.y[i] - stations.geometry.y[j])**2)
for j in range(J)] for i in range(I)]
N_i = [[j for j in range(J) if D_ij[i][j] <= S] for i in range(I)]
optimize_and_evaluate(demand_block=False)
=================== for P=3
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x3f7c710c
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [3e+00, 3e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 506.0000000
Root relaxation: objective 5.400000e+02, 45 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 540.0000000 540.00000 0.00% - 0s
Explored 1 nodes (45 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 540 506 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 5.400000000000e+02, best bound 5.400000000000e+02, gap 0.0000%
Open stations: [1, 6, 14]
Number of open stations: 3
=================== for P=4
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xa01cdfc9
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [4e+00, 4e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 582.0000000
Root relaxation: objective 7.040000e+02, 46 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 704.0000000 704.00000 0.00% - 0s
Explored 1 nodes (46 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 704 582 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 7.040000000000e+02, best bound 7.040000000000e+02, gap 0.0000%
Open stations: [1, 6, 14, 15]
Number of open stations: 4
=================== for P=5
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xb95f9119
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [5e+00, 5e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 675.0000000
Root relaxation: objective 8.550000e+02, 43 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 855.0000000 855.00000 0.00% - 0s
Explored 1 nodes (43 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 855 675 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 8.550000000000e+02, best bound 8.550000000000e+02, gap 0.0000%
Open stations: [1, 2, 6, 14, 15]
Number of open stations: 5
=================== for P=6
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xdc018ef8
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [6e+00, 6e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 746.0000000
Root relaxation: objective 1.005000e+03, 39 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1005.0000000 1005.00000 0.00% - 0s
Explored 1 nodes (39 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1005 746 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.005000000000e+03, best bound 1.005000000000e+03, gap 0.0000%
Open stations: [1, 2, 4, 6, 14, 15]
Number of open stations: 6
=================== for P=7
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xd4eb132b
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [7e+00, 7e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 929.0000000
Root relaxation: objective 1.146000e+03, 38 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1146.0000000 1146.00000 0.00% - 0s
Explored 1 nodes (38 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1146 929 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.146000000000e+03, best bound 1.146000000000e+03, gap 0.0000%
Open stations: [2, 4, 6, 14, 15, 17, 18]
Number of open stations: 7
=================== for P=8
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x05e3c257
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [8e+00, 8e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1086.0000000
Root relaxation: objective 1.270000e+03, 30 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1270.0000000 1270.00000 0.00% - 0s
Explored 1 nodes (30 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1270 1086 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.270000000000e+03, best bound 1.270000000000e+03, gap 0.0000%
Open stations: [2, 4, 6, 13, 14, 16, 17, 18]
Number of open stations: 8
=================== for P=9
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xf7ea4d1e
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [9e+00, 9e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1177.0000000
Root relaxation: objective 1.384000e+03, 30 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1384.0000000 1384.00000 0.00% - 0s
Explored 1 nodes (30 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1384 1177 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.384000000000e+03, best bound 1.384000000000e+03, gap 0.0000%
Open stations: [2, 4, 6, 11, 13, 14, 16, 17, 18]
Number of open stations: 9
=================== for P=10
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x7467d208
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1291.0000000
Root relaxation: objective 1.475000e+03, 27 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1475.0000000 1475.00000 0.00% - 0s
Explored 1 nodes (27 simplex iterations) in 0.04 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1475 1291 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.475000000000e+03, best bound 1.475000000000e+03, gap 0.0000%
Open stations: [2, 4, 6, 11, 13, 14, 16, 17, 18, 25]
Number of open stations: 10
=================== for P=11
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x10c3d27f
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1433.0000000
Root relaxation: objective 1.564000e+03, 27 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1564.0000000 1564.00000 0.00% - 0s
Explored 1 nodes (27 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1564 1433 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.564000000000e+03, best bound 1.564000000000e+03, gap 0.0000%
Open stations: [2, 4, 6, 11, 13, 14, 16, 17, 18, 24, 25]
Number of open stations: 11
=================== for P=12
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x649633df
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1493.0000000
Root relaxation: objective 1.647000e+03, 27 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1647.0000000 1647.00000 0.00% - 0s
Explored 1 nodes (27 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1647 1493 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.647000000000e+03, best bound 1.647000000000e+03, gap 0.0000%
Open stations: [2, 4, 6, 11, 13, 14, 16, 17, 18, 23, 24, 25]
Number of open stations: 12
=================== for P=13
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x9b95d984
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1591.0000000
Root relaxation: objective 1.715000e+03, 18 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1715.0000000 1715.00000 0.00% - 0s
Explored 1 nodes (18 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1715 1591 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.715000000000e+03, best bound 1.715000000000e+03, gap 0.0000%
Open stations: [2, 4, 6, 11, 12, 13, 14, 16, 17, 18, 23, 24, 25]
Number of open stations: 13
=================== for P=14
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xdadf5112
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1611.0000000
Root relaxation: objective 1.743000e+03, 17 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1743.0000000 1743.00000 0.00% - 0s
Explored 1 nodes (17 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1743 1611 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.743000000000e+03, best bound 1.743000000000e+03, gap 0.0000%
Open stations: [1, 2, 4, 6, 11, 12, 13, 14, 16, 17, 18, 23, 24, 25]
Number of open stations: 14
=================== for P=15
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xe090a64f
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1646.0000000
Root relaxation: objective 1.763000e+03, 14 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1763.0000000 1763.00000 0.00% - 0s
Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1763 1646 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.763000000000e+03, best bound 1.763000000000e+03, gap 0.0000%
Open stations: [1, 2, 4, 6, 11, 12, 13, 14, 15, 16, 17, 18, 23, 24, 25]
Number of open stations: 15
=================== for P=16
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xc848a4a7
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1714.0000000
Root relaxation: objective 1.780000e+03, 8 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 1780.0000000 1780.00000 0.00% - 0s
Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 1780 1714 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.780000000000e+03, best bound 1.780000000000e+03, gap 0.0000%
Open stations: [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25]
Number of open stations: 16
=================== for P=17
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x743280a7
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1789.0000000
Root relaxation: cutoff, 3 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 cutoff 0 1789.00000 1789.00000 0.00% - 0s
Explored 1 nodes (3 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 1789 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.789000000000e+03, best bound 1.789000000000e+03, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25]
Number of open stations: 17
=================== for P=18
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xbb43ee56
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 3260 rows and 3263 columns
Presolve time: 0.00s
Presolved: 45 rows, 69 columns, 199 nonzeros
Variable types: 0 continuous, 69 integer (69 binary)
Found heuristic solution: objective 1793.0000000
Root relaxation: infeasible, 1 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 infeasible 0 1793.00000 1793.00000 0.00% - 0s
Explored 1 nodes (1 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 1793 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.793000000000e+03, best bound 1.793000000000e+03, gap 0.0000%
Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26]
Number of open stations: 18
=================== for P=19 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0xa9cc7751 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3260 rows and 3263 columns Presolve time: 0.00s Presolved: 45 rows, 69 columns, 199 nonzeros Variable types: 0 continuous, 69 integer (69 binary) Found heuristic solution: objective 1797.0000000 Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26, 27] Number of open stations: 19
=================== for P=20 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0x3c5cc094 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3261 rows and 3264 columns Presolve time: 0.01s Presolved: 44 rows, 68 columns, 192 nonzeros Found heuristic solution: objective 1797.0000000 Variable types: 0 continuous, 68 integer (68 binary) Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26, 27] Number of open stations: 19
=================== for P=21 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0xa72ab122 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3264 rows and 3267 columns Presolve time: 0.01s Presolved: 41 rows, 65 columns, 174 nonzeros Found heuristic solution: objective 1797.0000000 Variable types: 0 continuous, 65 integer (65 binary) Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26, 27] Number of open stations: 19
=================== for P=22 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0xf698ea55 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3272 rows and 3275 columns Presolve time: 0.01s Presolved: 33 rows, 57 columns, 134 nonzeros Found heuristic solution: objective 1797.0000000 Variable types: 0 continuous, 57 integer (57 binary) Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 25, 26, 27] Number of open stations: 19
=================== for P=23 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0xf679243a Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3285 rows and 3288 columns Presolve time: 0.00s Presolved: 20 rows, 44 columns, 82 nonzeros Found heuristic solution: objective 1797.0000000 Variable types: 0 continuous, 44 integer (44 binary) Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27] Number of open stations: 23
=================== for P=24 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0x63944ca0 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3305 rows and 3332 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27] Number of open stations: 22
=================== for P=25 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0x32ab1ba6 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3305 rows and 3332 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [0, 1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27] Number of open stations: 23
=================== for P=26 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0xaedb8953 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3305 rows and 3332 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [0, 1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27] Number of open stations: 23
=================== for P=27 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0xa6b75529 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3305 rows and 3332 columns Presolve time: 0.01s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [0, 1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27] Number of open stations: 23
=================== for P=28 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros Model fingerprint: 0xe7946d32 Variable types: 0 continuous, 3332 integer (3332 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 3305 rows and 3332 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 1797 -0 Optimal solution found (tolerance 1.00e-04) Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27] Number of open stations: 28
fishnet_points_mile = create_fishnet(5280)
Number of points in the fishnet: 330
fishnet_points_mile = fishnet_points_mile.reset_index(drop=True)
len(fishnet_points_mile)
128
I = 128
J = 28
a_i = [1] * I
D_ij = [[np.sqrt((fishnet_points_mile.geometry.x[i] - stations.geometry.x[j])**2 +
(fishnet_points_mile.geometry.y[i] - stations.geometry.y[j])**2)
for j in range(J)] for i in range(I)]
N_i = [[j for j in range(J) if D_ij[i][j] <= S] for i in range(I)]
optimize_and_evaluate(demand_block=False)
=================== for P=3
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xa5c1f76a
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [3e+00, 3e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 106 rows and 116 columns
Presolve time: 0.00s
Presolved: 23 rows, 40 columns, 88 nonzeros
Found heuristic solution: objective 21.0000000
Variable types: 0 continuous, 40 integer (35 binary)
Root relaxation: objective 2.400000e+01, 25 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 24.0000000 24.00000 0.00% - 0s
Explored 1 nodes (25 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 24 21 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 2.400000000000e+01, best bound 2.400000000000e+01, gap 0.0000%
Open stations: [5, 14, 18]
Number of open stations: 3
=================== for P=4
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xd591673c
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [4e+00, 4e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 106 rows and 115 columns
Presolve time: 0.00s
Presolved: 23 rows, 41 columns, 89 nonzeros
Found heuristic solution: objective 28.0000000
Variable types: 0 continuous, 41 integer (36 binary)
Root relaxation: objective 3.100000e+01, 22 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 31.0000000 31.00000 0.00% - 0s
Explored 1 nodes (22 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 31 28 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 3.100000000000e+01, best bound 3.100000000000e+01, gap 0.0000%
Open stations: [5, 14, 17, 18]
Number of open stations: 4
=================== for P=5
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x4a009212
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [5e+00, 5e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 31.0000000
Root relaxation: objective 3.700000e+01, 19 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 37.0000000 37.00000 0.00% - 0s
Explored 1 nodes (19 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 37 31 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 3.700000000000e+01, best bound 3.700000000000e+01, gap 0.0000%
Open stations: [5, 14, 15, 17, 18]
Number of open stations: 5
=================== for P=6
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x55390191
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [6e+00, 6e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 35.0000000
Root relaxation: objective 4.300000e+01, 17 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 43.0000000 43.00000 0.00% - 0s
Explored 1 nodes (17 simplex iterations) in 0.00 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 43 35 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 4.300000000000e+01, best bound 4.300000000000e+01, gap 0.0000%
Open stations: [2, 5, 13, 14, 17, 18]
Number of open stations: 6
=================== for P=7
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x1929caf9
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [7e+00, 7e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 41.0000000
Root relaxation: objective 4.800000e+01, 12 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 48.0000000 48.00000 0.00% - 0s
Explored 1 nodes (12 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 48 41 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 4.800000000000e+01, best bound 4.800000000000e+01, gap 0.0000%
Open stations: [2, 4, 6, 13, 14, 17, 18]
Number of open stations: 7
=================== for P=8
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xa1907605
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [8e+00, 8e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 51.0000000
Root relaxation: objective 5.200000e+01, 9 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 52.0000000 52.00000 0.00% - 0s
Explored 1 nodes (9 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 52 51 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 5.200000000000e+01, best bound 5.200000000000e+01, gap 0.0000%
Open stations: [2, 4, 6, 13, 14, 15, 17, 18]
Number of open stations: 8
=================== for P=9
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xe9a18f38
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [9e+00, 9e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 54.0000000
Root relaxation: objective 5.500000e+01, 9 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 55.0000000 55.00000 0.00% - 0s
Explored 1 nodes (9 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 55 54 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 5.500000000000e+01, best bound 5.500000000000e+01, gap 0.0000%
Open stations: [2, 4, 6, 11, 13, 14, 15, 17, 18]
Number of open stations: 9
=================== for P=10
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xfeb442bc
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 57.0000000
Root relaxation: objective 5.800000e+01, 8 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
* 0 0 0 58.0000000 58.00000 0.00% - 0s
Explored 1 nodes (8 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 3: 58 57 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 5.800000000000e+01, best bound 5.800000000000e+01, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 13, 14, 15, 17, 18]
Number of open stations: 10
=================== for P=11
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x5b1c1a19
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 61.0000000
Root relaxation: cutoff, 4 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 cutoff 0 61.00000 61.00000 0.00% - 0s
Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 61 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 6.100000000000e+01, best bound 6.100000000000e+01, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 12, 13, 14, 15, 17, 18]
Number of open stations: 11
=================== for P=12
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xa48f30b9
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 63.0000000
Root relaxation: cutoff, 3 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 cutoff 0 63.00000 63.00000 0.00% - 0s
Explored 1 nodes (3 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 63 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 6.300000000000e+01, best bound 6.300000000000e+01, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 12, 13, 14, 16, 17, 18, 25]
Number of open stations: 12
=================== for P=13
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x4b6bcc9d
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 64.0000000
Root relaxation: cutoff, 3 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 cutoff 0 64.00000 64.00000 0.00% - 0s
Explored 1 nodes (3 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 64 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 6.400000000000e+01, best bound 6.400000000000e+01, gap 0.0000%
Open stations: [2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 25]
Number of open stations: 13
=================== for P=14
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xe823640e
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [1e+01, 1e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 65.0000000
Root relaxation: cutoff, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 cutoff 0 65.00000 65.00000 0.00% - 0s
Explored 1 nodes (2 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 65 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 6.500000000000e+01, best bound 6.500000000000e+01, gap 0.0000%
Open stations: [2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 25]
Number of open stations: 14
=================== for P=15
Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2))
CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2]
Thread count: 12 physical cores, 20 logical processors, using up to 20 threads
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x60c4095b
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
Matrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 1e+00]
RHS range [2e+01, 2e+01]
Found heuristic solution: objective -0.0000000
Presolve removed 110 rows and 120 columns
Presolve time: 0.00s
Presolved: 19 rows, 36 columns, 79 nonzeros
Variable types: 0 continuous, 36 integer (34 binary)
Found heuristic solution: objective 66.0000000
Root relaxation: cutoff, 3 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 cutoff 0 66.00000 66.00000 0.00% - 0s
Explored 1 nodes (3 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 20 (of 20 available processors)
Solution count 2: 66 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 6.600000000000e+01, best bound 6.600000000000e+01, gap 0.0000%
Open stations: [2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 23, 25]
Number of open stations: 15
=================== for P=16 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0xcd911409 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 110 rows and 120 columns Presolve time: 0.00s Presolved: 19 rows, 36 columns, 79 nonzeros Variable types: 0 continuous, 36 integer (34 binary) Found heuristic solution: objective 67.0000000 Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 67 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.700000000000e+01, best bound 6.700000000000e+01, gap 0.0000% Open stations: [2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25] Number of open stations: 16
=================== for P=17 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x4379ff04 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 111 rows and 121 columns Presolve time: 0.00s Presolved: 18 rows, 35 columns, 74 nonzeros Found heuristic solution: objective 68.0000000 Variable types: 0 continuous, 35 integer (33 binary) Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 20 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25] Number of open stations: 17
=================== for P=18 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x52a0f313 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25] Number of open stations: 18
=================== for P=19 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x5f486a89 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25] Number of open stations: 17
=================== for P=20 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0xb3e412df Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25, 26] Number of open stations: 20
=================== for P=21 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x5b0cb681 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25, 26] Number of open stations: 20
=================== for P=22 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x5809d8c3 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25, 26] Number of open stations: 20
=================== for P=23 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x57d6422b Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25, 26] Number of open stations: 20
=================== for P=24 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x458dd830 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [2e+01, 2e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25, 26] Number of open stations: 20
=================== for P=25 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x144adec4 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25, 26] Number of open stations: 20
=================== for P=26 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0xe907070f Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 25] Number of open stations: 18
=================== for P=27 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x72992fe0 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 25] Number of open stations: 19
=================== for P=28 Gurobi Optimizer version 11.0.1 build v11.0.1rc0 (win64 - Windows 10.0 (19045.2)) CPU model: 12th Gen Intel(R) Core(TM) i7-12700, instruction set [SSE2|AVX|AVX2] Thread count: 12 physical cores, 20 logical processors, using up to 20 threads Optimize a model with 129 rows, 156 columns and 294 nonzeros Model fingerprint: 0x47da8164 Variable types: 0 continuous, 156 integer (156 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [3e+01, 3e+01] Found heuristic solution: objective -0.0000000 Presolve removed 129 rows and 156 columns Presolve time: 0.01s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units) Thread count was 1 (of 20 available processors) Solution count 2: 68 -0 Optimal solution found (tolerance 1.00e-04) Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000% Open stations: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27] Number of open stations: 28
In Lab 2, we discovered that different Coverage Distance Standard can impact the coverage analysis result.
In Lab 4, we can discover how different demand representation makes difference.
Share your insights about
TIP: you can copy and paste your screenshot into markdown cells
PUT your answer HERE
Coverage by Census blocks
Coverage by .2 mile fishnet
Coverage by 1 mile fishnet
Currently Santa Barbara has too many stations. The could get a similer level of coverage with a mere 15 stations. Or fewer depending on the level of coverage than is needed. By variaing the size of the fishnets you run into a sort of MAU problem where the gridded nature of the cells make for a poor representation of the actual populaiton, as they tend to be clustered into a small area. Thus it is better to just stick to cencus blocks that are smaller when they encounter the areas with a higher population density.